package com.syg.springboot07.rabbitmq._01simpleQueue;


import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;

/**
 *
 * 不需要预先创建队列
 *
 * 获取MQ的连接
 *
 * 简单消息队列模型,一个队列,一个消费者,一个生产者,此种模式应该不会出现重复消费任务的问题
 *      那么消费者是怎么知道队列中有任务的？
 *      如果一直向消息队列放入数据会怎么样？
 *
 *      消费者从队列中获取消息，服务端如何知道消息已经被消费呢？
 *      模式1：自动确认
 *          只要消息从队列中获取，无论消费者获取到消息后是否成功消息，都认为是消息已经成功消费。
 *      模式2：手动确认
 *          消费者从队列中获取消息后，服务器会将该消息标记为不可用状态，等待消费者的反馈，如果消费者一直没有反馈，那么该消息将一直处于不可用状态。
 */
public class ConnectionUtil {

    public static Connection getConnection() throws Exception {
        //定义连接工厂
        ConnectionFactory factory = new ConnectionFactory();
        //设置服务地址
        factory.setHost("localhost");
        //端口
        factory.setPort(5672);
        //设置账号信息，用户名、密码、vhost
        factory.setVirtualHost("testHost");
        factory.setUsername("admin");
        factory.setPassword("admin");
        // 通过工程获取连接
        Connection connection = factory.newConnection();
        return connection;
    }
}
